import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
//page
import 'home_page.dart';
import 'category_page.dart';
import 'cart_page.dart';
import 'member_page.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; //屏幕适配方案

import 'package:provide/provide.dart';
import '../provide/CurrentIndex.dart';


class IndexPage extends StatelessWidget {

  final List<BottomNavigationBarItem> bottomTabs = [
    BottomNavigationBarItem(
      icon: Icon(CupertinoIcons.home),
      title:Text("首页")
    ),
    BottomNavigationBarItem(
      icon: Icon(CupertinoIcons.search),
      title:Text("分类")
    ),
    BottomNavigationBarItem(
      icon: Icon(CupertinoIcons.shopping_cart),
      title:Text("购物车")
    ),
    BottomNavigationBarItem(
      icon: Icon(CupertinoIcons.profile_circled),
      title:Text("会员中心")
    ),
  ];
  //四个主页面
  final List<Widget> tabBodies = [
    HomePage(),
    CategoryPage(),
    CartPage(),
    MenberPage()
  ];

  IndexPage({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    ScreenUtil.instance = ScreenUtil(width: 750.0,height:1335.0)..init(context);
    return Provide<CurrentIndexProvide>(
      builder: (context,child,childprovide){
        int currentIndex = childprovide.currentIndex;
        return Scaffold(
          backgroundColor: Color.fromRGBO(244, 245, 245, 0.9),
          //底部导航位置
          bottomNavigationBar:BottomNavigationBar(
            type:BottomNavigationBarType.fixed,
            currentIndex: currentIndex,
            items:bottomTabs,
            onTap: (index){
              childprovide.changeIndex(index);
            }
          ),
          body:IndexedStack(
            index:currentIndex,
            children: tabBodies
          )
        );
      },
    );
  }
}


// class IndexPage extends StatefulWidget {
//   IndexPage({Key key}) : super(key: key);

//   _IndexPageState createState() => _IndexPageState();
// }

// class _IndexPageState extends State<IndexPage> {
//   //底部导航图标
//   final List<BottomNavigationBarItem> bottomTabs = [
//     BottomNavigationBarItem(
//       icon: Icon(CupertinoIcons.home),
//       title:Text("首页")
//     ),
//     BottomNavigationBarItem(
//       icon: Icon(CupertinoIcons.search),
//       title:Text("分类")
//     ),
//     BottomNavigationBarItem(
//       icon: Icon(CupertinoIcons.shopping_cart),
//       title:Text("购物车")
//     ),
//     BottomNavigationBarItem(
//       icon: Icon(CupertinoIcons.profile_circled),
//       title:Text("会员中心")
//     ),
//   ];
//   //四个主页面
//   final List<Widget> tabBodies = [
//     HomePage(),
//     CategoryPage(),
//     CartPage(),
//     MenberPage()
//   ];
//   //当前页面的索引
//   int currentIndex = 0;
//   //当前的页面
//   var currentPage;

//   @override
//   void initState() {
//     super.initState();
//     //初始化首页
//     currentPage = tabBodies[0];
//   }

//   @override
//   Widget build(BuildContext context) {
//     ScreenUtil.instance = ScreenUtil(width: 750.0,height:1335.0)..init(context);
//     return Scaffold(
//       backgroundColor: Color.fromRGBO(244, 245, 245, 0.9),
//       //底部导航位置
//       bottomNavigationBar:BottomNavigationBar(
//         type:BottomNavigationBarType.fixed,
//         currentIndex: currentIndex,
//         items:bottomTabs,
//         onTap: (index){
//           setState(() {
//             currentIndex = index;
//             currentPage = tabBodies[currentIndex];
//           });
//         }
//       ),
//       body:IndexedStack(
//         index:currentIndex,
//         children: tabBodies
//       )
//     );
//   }
// }
/*
 * AutomaticKeepAliveClientMixin这个Mixin就是Flutter为了保持页面设置的。
 * 哪个页面需要保持页面状态，就在这个页面进行混入。
 *
 *不过使用使用这个Mixin是有几个先决条件的：
 *--使用的页面必须是StatefulWidget,如果是StatelessWidget是没办法办法使用的。
 *--其实只有两个前置组件才能保持页面状态：PageView和IndexedStack。
 *--重写wantKeepAlive方法，如果不重写也是实现不了的。
 */
